# 字典的定义
d1 = {} # 空字典
d2 = dict() # 空字典
d3 = {'name': '张三', 'age': 18, 'gender': True}
print(d3)   # {'name': '张三', 'age': 18, 'gender': True}
print(type(d3)) # <class 'dict'>

# 字典的常用操作
# 添加数据
# 指定键直接添加
dict1 = {}
dict1['name'] = '张三'
dict1['age'] = 18
dict1['name'] = '李四'
print(dict1)

# 使用update方法添加
dict2 = {}
dict2.update({'name': '张三', 'age': 18})
dict2.update({'name': '王五', 'gender': True})
print(dict2)

# 修改数据
dict3 = {'name': '张三', 'age': 18}
dict3['name'] = '王五'

# 使用update方法修改数据
dict4 = {'name': '张三', 'age': 18}
dict4.update({'name': '王五'})

# 删除数据
dict5 = {'name': '张三', 'age': 18, 'gender': True, 'hobby': 'football'}
dict6 = {}
# pop
result = dict5.pop('hobby')
print(f"删除数据：{result}, 删除后字典为：{dict5}")

# popitem()
result = dict5.popitem()
print(f"删除数据：{result}, 删除后字典为：{dict5}")

# del: 删除指定键
del dict5['age']
print(dict5)

# clear: 清空字典
dict5.clear()
print(dict5)    #  {}

# 查找数居
# 使用键找值
dict7 = {'name': '张三', 'age': 18, 'gender': True, 'hobby': 'football'}
print(dict7['name'])

# 使用get方法查找数据
print(dict7.get('name'))    # 张三
print(dict7.get('a','未知'))  # 未知


# 字典中的其他方法
dict8 = {'name': '张三', 'age': 18, 'gender': True, 'hobby': 'football'}
# keys()：返回所有键的列表
keys = dict8.keys()
print(keys) # dict_keys(['name', 'age', 'gender', 'hobby'])
print(type(keys))   # <class 'dict_keys'>
# values()：返回所有值的列表
values = dict8.values()
print(values)   # dict_values(['张三', 18, True, 'football'])
print(type(values)) # <class 'dict_values'>
# items()：返回所有键值对列表
items = dict8.items()
print(items)    # dict_items([('name', '张三'), ('age', 18), ('gender', True), ('hobby', 'football')])
print(type(items))  # <class 'dict_items'>